﻿Imports ControladorasAT.SIREOS
Imports ServiciosAT
Imports Utilitarios

Partial Class UserControl_RegistroCliente
    Inherits System.Web.UI.UserControl

#Region "Metodos"

    Private Sub loadTipoCliente()
        panelEmpresa.Visible = False
        panelSede.Visible = False
        panelCliente.Visible = False
        ddlbTipoDocumento.SelectedValue = Valores.Numero.Cero
        ddlbTipoDocumento.Enabled = True
        If ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Empresa Then
            panelEmpresa.Visible = True
            panelSede.Visible = True
            cbTienda.Visible = True
            ddlbTipoDocumento.Enabled = False
            ddlbTipoDocumento.SelectedValue = Valores.TipoDocumento.RUC
        ElseIf ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Persona Then
            panelCliente.Visible = True
            panelSede.Visible = True
            cbTienda.Visible = False
            ddlbTipoDocumento.Enabled = True
        End If
    End Sub

    Private Function buscarCliente(ByRef codcliente As String, ByRef nomcliente As String) As Boolean
        Dim oServicioBE As New SireosWSServicio.Cliente
        oServicioBE.nroDocumento = txbDocumento.Text
        Dim oCtCliente As New CtServicio
        Dim oCliente As SireosWSServicio.Cliente = CType(oCtCliente.buscarCliente(oServicioBE), SireosWSServicio.Cliente)
        If oCliente Is Nothing Then
            Return True
        Else
            codcliente = oCliente.codCliente
            nomcliente = oCliente.nomCliente
            Return False
        End If
    End Function

    Private Function validarCampos() As Boolean
        If ddlbTipoCliente.SelectedValue = Valores.Numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarTipoCliente
            Return False
        ElseIf ddlbTipoDocumento.SelectedValue = Valores.Numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarTipoDocumento
            Return False
        ElseIf txbDocumento.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarNroDocumento
            Return False
        ElseIf ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Empresa And txbEmpresa.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarRazonSocial
            Return False
        ElseIf ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Persona And txbNombres.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarNombre
            Return False
        ElseIf ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Persona And txbApellidos.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarApellido
            Return False
        ElseIf txbSede.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarSede
            Return False
        ElseIf txbDireccion.Text = Valores.vacio Then
            Valores.mensajevar = Mensajes.ingresarDireccion
            Return False
        ElseIf ddlbRegion.SelectedValue = Valores.Numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarRegion
            Return False
        ElseIf ddlbProvincia.SelectedValue = Valores.Numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarProvincia
            Return False
        ElseIf ddlbDistrito.SelectedValue = Valores.Numero.Cero Then
            Valores.mensajevar = Mensajes.seleccionarDistrito
            Return False
        Else
            Return True
        End If
    End Function

    Public Sub cargarDatosCliente()
        LblCodigoCliente.Text = Session("CodigoCliente")
        LblCodigoSede.Text = Session("CodigoSede")
        Dim oCtCliente As New CtCliente
        Dim oSede As New SireosWSCliente.Sede
        oSede.codSede = LblCodigoSede.Text
        Dim oClienteBE As SireosWSCliente.Sede = CType(oCtCliente.cargarDatosCliente(oSede), SireosWSCliente.Sede)
        If Not (oClienteBE Is Nothing) Then
            ddlbTipoCliente.SelectedValue = oClienteBE.cliente.codTipoCLiente
            ddlbTipoDocumento.SelectedValue = oClienteBE.cliente.codTipoDocumento
            loadTipoCliente()
            txbDocumento.Text = oClienteBE.cliente.nroDocumento
            txbApellidos.Text = oClienteBE.cliente.apeCliente
            txbNombres.Text = oClienteBE.cliente.nomCliente
            txbEmpresa.Text = oClienteBE.cliente.razonSocial
            If ddlbTipoCliente.SelectedValue = Valores.tipoCliente.Empresa And oClienteBE.cliente.razonSocial = Valores.vacio Then
                txbEmpresa.Text = oClienteBE.cliente.apeCliente
            End If
            txbWeb.Text = oClienteBE.cliente.paginaWeb
            cbCondicionCliente.Checked = Convert.ToBoolean(oClienteBE.cliente.clienteFijo)
            cbTienda.Checked = Convert.ToBoolean(oClienteBE.cliente.tiendaCliente)

            txbSede.Text = oClienteBE.nomSede
            txbDireccion.Text = oClienteBE.dirSede
            txbTelefono.Text = oClienteBE.telSede
            txbAnexo.Text = oClienteBE.aneSede
            txbCelular.Text = oClienteBE.celSede
            txbCorreo1.Text = oClienteBE.correo1
            txbCorreo2.Text = oClienteBE.correo2
            ddlbRegion.SelectedValue = oClienteBE.ubigeo.codDepartamento
            Listas.ListarProvincias(ddlbProvincia, ddlbRegion.SelectedValue)
            ddlbProvincia.SelectedValue = oClienteBE.ubigeo.codProvincia
            Listas.listarDistritos(ddlbDistrito, ddlbRegion.SelectedValue, ddlbProvincia.SelectedValue)
            ddlbDistrito.SelectedValue = oClienteBE.codUbigeo
            cbContacto.Visible = False
        End If
        Session("CodigoCliente") = Valores.vacio
        Session("CodigoSede") = Valores.vacio
    End Sub

    Public Sub limpiarCampos()
        ddlbTipoCliente.SelectedValue = Valores.Numero.Cero
        loadTipoCliente()
        txbDocumento.Text = Valores.vacio
        txbNombres.Text = Valores.vacio
        txbApellidos.Text = Valores.vacio
        txbEmpresa.Text = Valores.vacio
        txbWeb.Text = Valores.vacio
        cbCondicionCliente.Checked = False
        cbTienda.Checked = False
        txbSede.Text = Valores.vacio
        txbDireccion.Text = Valores.vacio
        ddlbRegion.SelectedValue = Valores.Numero.Cero
        Listas.ListarProvincias(ddlbProvincia, ddlbRegion.SelectedValue)
        Listas.listarDistritos(ddlbDistrito, ddlbRegion.SelectedValue, ddlbProvincia.SelectedValue)
        txbTelefono.Text = Valores.vacio
        txbAnexo.Text = Valores.vacio
        txbCelular.Text = Valores.vacio
        txbCorreo1.Text = Valores.vacio
        txbCorreo2.Text = Valores.vacio
        cbContacto.Checked = False
        LblCodigoCliente.Text = Valores.vacio
        LblCodigoSede.Text = Valores.vacio
        LblCodigoContacto.Text = Valores.vacio
        txbApellidosContacto.Text = Valores.vacio
        txbNombresContacto.Text = Valores.vacio
        txbTelefonoContacto.Text = Valores.vacio
        txbCorreoContacto.Text = Valores.vacio
        ibtnGrabar.Visible = True
        LblCodigoCliente.Text = Valores.vacio
        LblCodigoSede.Text = Valores.vacio
        LblCodigoContacto.Text = Valores.vacio
        panelContacto.Visible = False
    End Sub

#End Region

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Listas.listarTabla(Valores.tabla.TipoCliente, ddlbTipoCliente)
            Listas.listarTabla(Valores.Tabla.TipoDocumento, ddlbTipoDocumento)
            Listas.listarRegiones(ddlbRegion)
            Listas.ListarProvincias(ddlbProvincia, ddlbRegion.SelectedValue)
            Listas.listarDistritos(ddlbDistrito, Convert.ToInt32(ddlbRegion.SelectedValue), Convert.ToInt32(ddlbProvincia.SelectedValue))
        End If
    End Sub

    Protected Sub ddlbTipoCliente_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlbTipoCliente.SelectedIndexChanged
        loadTipoCliente()
    End Sub

    Protected Sub ddlbRegion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlbRegion.SelectedIndexChanged
        Listas.ListarProvincias(ddlbProvincia, ddlbRegion.SelectedValue)
    End Sub

    Protected Sub ddlbProvincia_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlbProvincia.SelectedIndexChanged
        Listas.listarDistritos(ddlbDistrito, ddlbRegion.SelectedValue, ddlbProvincia.SelectedValue)
    End Sub

    Protected Sub cbContacto_CheckedChanged(sender As Object, e As EventArgs) Handles cbContacto.CheckedChanged
        If cbContacto.Checked = True Then
            panelContacto.Visible = True
        Else
            panelContacto.Visible = False
        End If
    End Sub

    Protected Sub ibtnGrabar_Click(sender As Object, e As ImageClickEventArgs) Handles ibtnGrabar.Click
        If validarCampos() = True Then
            Dim usureg As Integer = Session("CodigoUsuario")

            Dim oClienteBE As New SireosWSCliente.Cliente
            oClienteBE.cabTipoCliente = Valores.Tabla.TipoCliente
            oClienteBE.codTipoCLiente = Convert.ToInt32(ddlbTipoCliente.SelectedValue)
            oClienteBE.cabTipoDocumento = Valores.Tabla.TipoDocumento
            oClienteBE.codTipoDocumento = Convert.ToInt32(ddlbTipoDocumento.SelectedValue)
            oClienteBE.nroDocumento = txbDocumento.Text
            If ddlbTipoCliente.SelectedValue = Valores.TipoCliente.Persona Then
                oClienteBE.nomCliente = txbNombres.Text
                oClienteBE.apeCliente = txbApellidos.Text
            Else
                oClienteBE.razonSocial = txbEmpresa.Text.ToUpper
            End If
            If txbWeb.Text <> Valores.vacio Then
                oClienteBE.paginaWeb = txbWeb.Text.ToLower
            End If
            oClienteBE.clienteFijo = Convert.ToInt32(cbCondicionCliente.Checked)
            oClienteBE.tiendaCliente = Convert.ToInt32(cbTienda.Checked)
            oClienteBE.usuRegistro = usureg

            Dim refcodcli As String = Valores.vacio
            Dim refnomcli As String = Valores.vacio

            Dim oCtCliente As New CtCliente
            Dim codigocliente As Integer = 0
            If LblCodigoCliente.Text = Valores.vacio Then
                If buscarCliente(refcodcli, refnomcli) = True Then
                    LblCodigoCliente.Text = oCtCliente.registrarCliente(oClienteBE)
                Else
                    Helper.mensajeControl(Me, Mensajes.existeCliente + Valores.dospuntos.ToString + refnomcli.ToString)
                    Exit Sub
                End If
            Else
                If buscarCliente(refcodcli, refnomcli) = False And (LblCodigoCliente.Text <> refcodcli) Then
                    Helper.mensajeControl(Me, Mensajes.existeCliente + Valores.dospuntos + refnomcli.ToString)
                    Exit Sub
                Else
                    oClienteBE.codCliente = LblCodigoCliente.Text
                    oCtCliente.modificarCliente(oClienteBE)
                End If
            End If

            If LblCodigoCliente.Text > 0 Then
                Dim oSedeBE As New SireosWSCliente.Sede
                oSedeBE.codCliente = Convert.ToInt32(LblCodigoCliente.Text)
                oSedeBE.nomSede = txbSede.Text.ToUpper
                oSedeBE.dirSede = txbDireccion.Text
                oSedeBE.codUbigeo = Convert.ToInt32(ddlbDistrito.SelectedValue)
                oSedeBE.telSede = txbTelefono.Text
                oSedeBE.aneSede = txbAnexo.Text
                oSedeBE.celSede = txbCelular.Text
                oSedeBE.correo1 = txbCorreo1.Text
                oSedeBE.correo2 = txbCorreo2.Text
                oSedeBE.usuRegistro = usureg

                If LblCodigoSede.Text = Valores.vacio Then
                    LblCodigoSede.Text = oCtCliente.registrarSede(oSedeBE)
                Else
                    oSedeBE.codSede = LblCodigoSede.Text
                    oCtCliente.modificarSede(oSedeBE)
                    Session("CodigoTipoCliente") = ddlbTipoCliente.SelectedValue
                    Session("CodigoCliente") = LblCodigoCliente.Text
                    Session("NroDocumento") = txbDocumento.Text
                    Session("CodigoSede") = LblCodigoSede.Text
                    Helper.mensajeControl(Me, Mensajes.correctoModificado)
                    Exit Sub
                End If

                If LblCodigoSede.Text > 0 Then
                    If cbContacto.Checked = True Then
                        Dim oContactoBE As New SireosWSCliente.Contacto
                        oContactoBE.codSede = LblCodigoSede.Text
                        oContactoBE.nomContacto = txbNombresContacto.Text
                        oContactoBE.apeContacto = txbApellidosContacto.Text
                        oContactoBE.telContacto = txbTelefonoContacto.Text
                        oContactoBE.mailContacto = txbCorreoContacto.Text
                        oContactoBE.usuRegistro = usureg
                        If LblCodigoContacto.Text = Valores.vacio Or LblCodigoContacto.Text = Valores.vacio Then
                            LblCodigoContacto.Text = oCtCliente.registrarContacto(oContactoBE)
                        Else
                            oCtCliente.modificarContacto(oContactoBE)
                        End If
                    End If
                    Helper.mensajeControl(Me, Mensajes.correctoGrabado)
                    Session("CodigoTipoCliente") = ddlbTipoCliente.SelectedValue
                    Session("CodigoCliente") = LblCodigoCliente.Text
                    Session("NroDocumento") = txbDocumento.Text
                    Session("CodigoSede") = LblCodigoSede.Text
                    Session("CodigoContacto") = LblCodigoContacto.Text
                Else
                    Helper.mensajeControl(Me, Mensajes.errorGrabar)
                End If
            Else
                Helper.mensajeControl(Me, Mensajes.errorGrabar)
            End If
        Else
            Helper.mensajeControl(Me, Valores.mensajevar)
            End If
    End Sub

End Class
